home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 4.5 KB | 169 lines |
- 10 PRINT," *** MOON PROGRAM IN T.D.L. 8K BASIC 3/3/78 ***
- 15 PRINT:PRINT,"K2UYH ----- modified for ibm pc --- wa2tif":PRINT
- 20 M0=17472.5:SX=60:TN=10
- 30 M1=0.214:M2=0.114:M3=1.272:M4=0.146:M5=0.059:M6=0.057:M7=61.33:M8=1440
- 40 U1=0.751213:U2=0.0366011:U3=0.822513:U4=0.0362916:U5=0.995766
- 50 G1=0.397821:G2=0.917463:G3=0.658:G4=6.289:G5=1.274:G6=0.186
- 60 G7=0.6593:G8=6.2303:G9=5.144:K=2
- 70 U6=0.00273778:U7=0.974271:U8=0.0338632:U9=0.0312525:U0=0.0367482
- 80 Q0=0.0041645:Q1=0.0657098:Q2=1.00274:Q3=6.64606:HR=24
- 90 DEF FNA(X)=INT(X*DG*10+0.5)/10
- 100 DEF FNC(X)=(X-INT(X))*TU
- 110 HD=100
- 120 TU=2*4*ATN(1)
- 130 RD=TU/360
- 140 DG=360/TU
- 141 AD=40: AM=13: OD=74: OM=46
- 150 INPUT "WHAT ARE THE STATION CALL LETTERS";CL$
- 152 IF CL$="K2UYH" THEN 180
- 160 INPUT "WHAT IS LATITUDE IN DEG. MIN. (+FOR NORTH)";AD,AM
- 170 INPUT "WHAT IS LONGITUDE IN DEG. MIN. (+FOR WEST)";OD,OM
- 180 LA=(AD+AM/60)*RD
- 190 LO=(OD+OM/60)*RD
- 240 BE=100
- 250 B1=0
- 260 E=2400
- 270 INPUT "WHAT IS THE DESIRED PRINTOUT IN MINUTES";DI
- 280 NE=2
- 290 NR=1
- 300 INPUT "WHAT IS BEGINNING DATE (MM,DD,YYY)";M,D,Y
- 301 INPUT "DO YOU WANT POLARIZATION ROTATION ANGLE"; P$
- 302 PD=1000
- 303 IF P$="NO" THEN 310
- 304 INPUT "WHAT IS LAT. OF STATION CALLED"; PD,PM
- 305 INPUT "WHAT IS LONG. OF STATION CALLED"; XD,XM
- 306 PA=(PD+PM/60)*RD
- 307 PO=(XD+XM/60)*RD
- 310 GOSUB 1080
- 320 BM=M:BD=D:BY=Y:BJ=DJ
- 330 INPUT "WHAT IS ENDING DATE";M,D,Y
- 340 GOSUB 1080
- 350 EJ=DJ
- 360 PRINT:PRINT
- 370 BJ=INT(BJ*HD+0.5)/HD
- 380 EJ=INT(EJ*HD+0.5)/HD
- 390 DJ=BJ
- 400 LPRINT, CHR$(12):GOSUB 1550
- 410 LPRINT, TAB(22);"MOON TABLES FOR STATION"
- 420 LPRINT,:LPRINT, TAB(30);CL$:LPRINT,:LPRINT,:LPRINT, CHR$(12):GOSUB 1550
- 430 F7=0
- 440 F1=2:B=B1:T1=DJ-M0
- 450 V1=((B-INT(B/HD)*HD)+INT(B/HD)*SX)
- 460 V2=((E-INT(E/HD)*HD)+INT(E/HD)*SX):DF=V1-V2
- 470 IF DF<=0 THEN 500
- 480 IF DF=>DI THEN 1020
- 490 B=E
- 500 T=(B-INT(B/HD)*HD)/M8+INT(B/HD)/HR
- 510 IF F1>=2 THEN 550
- 520 IF F2>=NE THEN 550
- 530 F2=F2+1
- 540 GH=GH+Q0*DI:GOTO 700
- 550 F2=0:T5=T1+T
- 560 D1=FNC(U1+U2*T5):D2=FNC(U3+U4*T5):D3=FNC(U5+U6*T5)
- 570 D4=FNC(U7+U8*T5):D5=FNC(U9+U0*T5)
- 580 DO=D1+G3*RD*SIN(K*D4)+G4*RD*SIN(D2)
- 590 DO=DO-G5*RD*SIN(D2-K*D4)-G6*RD*SIN(D3)
- 600 DO=DO+M1*RD*SIN(K*D2)-M2*RD*SIN(K*D5)
- 610 DO=DO-M5*RD*SIN(K*D2-K*D4)-M6*RD*SIN(D2+D3-K*D4)
- 620 S=D5+G7*RD*SIN(K*D4)+G8*RD*SIN(D2)-M3*RD*SIN(D2-K*D4)
- 630 DT=G9*RD*SIN(S)-M4*RD*SIN(D5-K*D4)
- 640 E1=COS(DT)*SIN(DO)*G1+SIN(DT)*G2:DC=ATN(E1/(SQR(1-E1^2)))
- 650 A2=COS(DT)*COS(DO)/COS(DC)
- 660 A1=(COS(DT)*SIN(DO)*G2-SIN(DT)*G1)/COS(DC)
- 670 A=ATN(A1/A2):GOSUB 1260:RA=A
- 680 DL=Q1*T1:DL=T*HR*Q2+Q3+(DL-INT(DL/HR)*HR)
- 690 DL=(DL-INT(DL/HR)*HR):GH=(DL/HR)*TU-RA
- 700 IF GH>=0 THEN 720
- 710 GH=GH+TU
- 720 IF GH<=TU THEN 740
- 730 GH=GH-TU
- 740 UH=LO-GH
- 750 ES=COS(LA)*COS(UH)*COS(DC)+SIN(DC)*SIN(LA)
- 760 EC=SQR(1-ES^2):EL=ATN((ES/EC)-(1/(M7*EC))):FE=ATN(ES/EC)
- 770 IF EL<0 THEN 980
- 780 IF EL*DG>BE THEN 980
- 790 A2=SIN(DC)/(COS(LA)*COS(FE))
- 800 A2=A2-(SIN(LA)/COS(LA))*(SIN(FE)/COS(FE))
- 810 A1=SIN(LA)*SIN(DC)+COS(LA)*COS(DC)*COS(UH)
- 820 A1=(SIN(UH)*COS(DC))/SQR(1-A1^2):A=ATN(A1/A2):GOSUB 1260:AZ=A
- 830 IF AZ>0 THEN 850
- 840 AZ=AZ+TU
- 850 IF F1<2 THEN 930
- 860 BM$=STR$(BM):BM$=MID$(BM$,2,2):BD$=STR$(BD):BD$=MID$(BD$,2,2)
- 870 BT=BY-1900
- 880 BY$=STR$(BT):BY$=MID$(BY$,2,2)
- 890 LPRINT,:LPRINT, TAB(2);BM$;"/"BD$;"/"BY$;" GMT";TAB(16);"AZIMUTH";TAB(25);"ELEVATION";TAB(37);"GHA";TAB(43);"DECLINATION";TAB(56);"ROT"
- 910 LPRINT, TAB(2);"------------";TAB(16);"-------";TAB(25);"---------";TAB(36);"-----";TAB(43);"-----------";TAB(56);"---"
- 930 IF (T-F1)-(K*DI)/M8<0 THEN 950
- 940 LPRINT,
- 950 LPRINT, TAB(5);INT(B+0.5);TAB(16);FNA(AZ);TAB(27);FNA(EL);TAB(36);FNA(GH);TAB(46);FNA(DC);TAB(56);FNA(PR)
- 965 IF P$<> "NO" THEN GOSUB 1560 ELSE PR=0
- 970 F1=T
- 980 B=B+DI:Z=((B-INT(B/HD)*HD)-SX)
- 990 IF Z<0 THEN 450
- 1000 B=INT(B/HD)*HD+HD+Z
- 1010 GOTO 450
- 1020 GOSUB 1360
- 1030 DJ=INT(DJ*HD+0.5)/HD:F7=F7+1
- 1040 IF F7=NR THEN LPRINT, CHR$(12):F7=0
- 1050 DJ=DJ+1
- 1060 IF DJ<=EJ THEN 440
- 1070 END
- 1080 IF (Y-1853)/4<11 THEN 1110
- 1090 C1=-1
- 1100 GOTO 1120
- 1110 C1=0
- 1120 IF M=9 THEN 1160
- 1130 IF M=11 THEN 1160
- 1140 C2=0
- 1150 GOTO 1170
- 1160 C2=1
- 1170 IF M>=3 THEN 1220
- 1180 X1=365*(Y-1853)+D+30*(M+9)+INT((M+10)/2)
- 1190 X2=INT((Y-1853)/4)+1+C1
- 1200 DJ=X1+X2
- 1210 RETURN
- 1220 X3=365*(Y-1852)+D+30*(M-3)+INT((M-2)/2)
- 1230 X4=INT((Y-1852)/4)+C1+C2
- 1240 DJ=X3+X4
- 1250 RETURN
- 1260 IF A<>0 THEN 1300
- 1270 IF A2<0 THEN 1290
- 1280 RETURN
- 1290 A=TU/2:RETURN
- 1300 IF A>0 THEN 1340
- 1310 IF A2<0 THEN 1330
- 1320 A=TU+A:RETURN
- 1330 A=TU+(A-TU/2):RETURN
- 1340 IF A2>=0 THEN RETURN
- 1350 A=A+TU/2:RETURN
- 1360 IF BD<28 THEN 1530
- 1370 IF BM<>2 THEN 1420
- 1380 IF 400*INT(BY/400)=BY THEN 1410
- 1390 IF HD*INT(BY/HD)=BY THEN 1500
- 1400 IF 4*INT(BY/4)<>BY THEN 1500
- 1410 IF BD>=29 THEN 1500 ELSE 1530
- 1420 IF BD<30 THEN 1530 ELSE IF BD>30 THEN 1470
- 1430 IF BM=4 THEN 1500
- 1440 IF BM=6 THEN 1500
- 1450 IF BM=9 THEN 1500
- 1460 IF BM<>11 THEN 1530 ELSE 1500
- 1470 IF BM<>12 THEN 1500
- 1480 BY=INT((BY+1)*HD+0.5)/HD
- 1490 BM=0
- 1500 BD=1
- 1510 BM=BM+1
- 1520 GOTO 1540
- 1530 BD=BD+1
- 1540 RETURN
- 1550 FOR XX=1 TO 500:NEXT:RETURN
- 1560 REM EME POLARIZATION ROTATION GEOMETRY SUBROUTEEN
- 1570 TA=(SIN(PA)*COS(LA)-SIN(LA)*COS(PA)*COS(PO-LO))
- 1580 T2=((COS(PA)*SIN(LO-PO))*COS(AZ))
- 1590 L1=(SIN(LA)*SIN(PA)+COS(LA)*COS(PA)*COS(PO-LO))
- 1600 L2=(SIN(PA)*COS(LA)-SIN(LA)*COS(PA)*COS(PO-LO))
- 1610 L3=(COS(PA)*SIN(LO-PO)*SIN(AZ)*SIN(EL))
- 1620 PX=(TA*SIN(AZ)-T2)/(L1*COS(EL)-L2*COS(AZ)*SIN(EL)-L3)
- 1630 PR=ATN(PX)
- 1640 RETURN
-